﻿using System;

namespace TEST02
{
    //枚举
    enum Weeks
    {
        Sun,
        Mon,
        Tue,
        Wed,
        Thu,
        Fri,
        Sat
    };



    class Program
    {
        //var i = 5;
        //var a = "123";
        static void Main(string[] args)
        {
           //枚举遍历
           foreach(var i in Enum.GetNames(typeof(Weeks)))
            {
                Console.WriteLine(i);
            }
           //枚举遍历2
            foreach (var i in Enum.GetValues(typeof(Weeks)))
            {
                Console.WriteLine(i);
            }



            #region 复习题
            //输入一串字符，统计字母个数，数字个数，特殊符号
            //Console.WriteLine("请输入一串字符");
            ////默认输入的是字符串
            ////"gakuh ga5 4ag6"
            //string str = Console.ReadLine();
            ////foreach(数据类型 变量名 in 集合，数组，字符串)
            //int countChar = 0, countNum = 0, countSpec = 0;
            //foreach (var i in str)
            //{
            //    if(i>='A' && i<='Z' || i>='a' && i<='z')
            //    {
            //        countChar++;
            //    }else if(i>='0' && i <= '9')
            //    {
            //        countNum++;
            //    }
            //    else
            //    {
            //        countSpec++;
            //    }
            //}

            //Console.WriteLine("字母个数{2}，数字个数{1}，特殊符号{0}", countSpec,countNum, countChar);
            #endregion

            //数组:有序的元素集合
            //数组初始化
            //静态初始化:知道数组内元素个数，且长度固定
            //int[] arr = new int[] { 1,2,3,4,5};
            //int[] arr = {1,2,3,4,5 };
            //var arr = new int[] { 1, 2, 3, 4, 5 };
            //动态初始化:长度固定，但元素后面动态赋予
            //int[] arr1;
            //arr1 = new int[5];

            //int[] arr = new int[5];
            //Console.WriteLine("该数组长度" + arr.Length);
            //for (int i = 0; i < arr.Length; i++)
            //{
            //    arr[i] = i;
            //}

            ////数组的遍历
            //for (int i = 0; i < arr.Length; i++)
            //{
            //    Console.WriteLine(arr[i]);
            //}

            ////数组的遍历2
            //foreach(var i in arr)
            //{
            //    Console.Write(i+" ");
            //}



            // 1.随机生成5个数[0,20]，求出其中的最大值和最小值。
            //Scanner s = new Scanner(System.in);
            //Random rd = new Random();

            //int[] arr2 = new int[5];
            //for(int i = 0; i < arr2.Length; i++)
            //{
            //    arr2[i] = rd.Next(0,21);
            //}

            //foreach(var i in arr2)
            //{
            //    Console.Write(i+" ");
            //}

            //找到最大最小  -1,-2,-3,-4,-5
            //int max = arr2[0];
            //int min = arr2[0];
            //for (int j = 0; j< arr2.Length; j++) 
            //{
            //    //最大
            //    //if (max<arr2[j])
            //    //{
            //    //    max = arr2[j];
            //    //}
            //    //三元 ?:
            //    max = max > arr2[j] ? max : arr2[j];

            //    //最小
            //    //if (min > arr2[j])
            //    //{
            //    //    min = arr2[j];
            //    //}
            //    min = min < arr2[j] ? max : arr2[j];
            //}
            //Console.WriteLine("最大值：{0}最小值{1}",max,min);


            //4.将一个数组中的元素逆序输出，即第一个元素和最后一个元素交换，第二个数与倒数第二元素交换…..，
            //例如：原数组为：9  2  5  7   8，逆序后的数组为：8   7   5  2  9
            //8 2 5 7 9 --> 8 7 5 2 9 --> 8 7 5 2 9 -->8 2 5 7 9 -->9 2 5 7 8
            //var arr3 = new int[] { 9, 2, 5, 7, 8 };
            ////逆序前
            //foreach(var i in arr3)
            //{
            //    Console.Write(i + " ");
            //}
            ////逆序
            //for(int i = 0; i < arr3.Length/2; i++)
            //{
            //    int t = arr3[i];
            //    arr3[i] = arr3[arr3.Length - 1-i];
            //    arr3[arr3.Length - 1] = t;
            //}
            ////逆序后
            //Console.WriteLine();
            //foreach (var i in arr3)
            //{
            //    Console.Write(i + " ");
            //}


            //矩阵数组：多维数组
            //二维数组()，三维数组
            //静态初始化
            int[,] arr4={ { 1, 2, 3 }, { 4, 5, 6 } };
            Console.WriteLine(arr4[0,1]);

            //动态初始化
            int[,] arr5 = new int[3,4];
            int[][] arr6 = new int[3][];
            //第一行  每列个数不相同
            arr6[0] = new int[3];
            arr6[1] = new int[5];
            arr6[2] = new int[2];
            for(int i = 0; i < arr6.Length; i++)
            {
                for(int j = 0; j < arr6[i].Length; j++)
                {
                    arr6[i][j] = i + j;
                }
            }

            for (int i = 0; i < arr6.Length; i++)
            {
                for (int j = 0; j < arr6[i].Length; j++)
                {
                    Console.Write(arr6[i][j]+" ");
                }
                Console.WriteLine();
            }






        }
    }
}
